1. Field of the Invention
The invention relates to a redundant storage virtualization subsystem, and in particular, to a method of transmitting data between redundant storage virtualization controllers in redundant storage virtualization subsystem.
2. Description of the Related Art
Storage virtualization is a technology that virtualizes physical storage space, which combines sections of physical storage devices (PSDs) into logical storage entities, herein referred to as logical media units (LMUs), which are made accessible to a host entity. Storage virtualization has been utilized primarily in Redundant Array of Independent Disks (RAID) technology, combining smaller physical storage devices into logical media units with high capacity, fault tolerance, and high performance.
A storage virtualization controller (SVC) is a device the primary purpose of which is to map combinations of sections of physical storage media to logical media units visible to a host entity. Input/output (I/O) requests received from the host entity are parsed and interpreted, and associated operations and data are translated into a physical storage device I/O requests. This process may be indirect with operations cached, delayed (e.g., write-back), anticipated (e.g., read-ahead), grouped, etc. to enhance performance and other operational characteristics. Therefore, the I/O requests of the host entity may not necessarily correspond to the physical storage device I/O requests in a one-to-one manner.
An external (or stand-alone storage virtualization controller) is a storage virtualization controller that is connected to the host entity via an I/O interface, and that can be connected to a device external to the host entity. External storage virtualization controllers operate independent of a host entity.
The primary motivation in configuring a pair of external storage virtualization controllers (SVCs) into a redundant pair is to allow continued, uninterrupted access to data by a host (or more than one host) even in the event of a malfunction or failure of a single storage virtualization controller. This is accomplished by incorporating functionality into the storage virtualization controllers that allow one controller to take over for the other in the event that the other malfunctions or becomes completely incapacitated.
Redundantly storage virtualization controller pair modes can be divided into two categories: active-standby and active-active modes. In active-standby mode, a storage virtualization controller (known as a primary storage virtualization controller) presents, manages, and processes all I/O requests for all LMUs in the storage virtualization subsystem, while the other storage virtualization controller (known as a secondary storage virtualization controller) stands by to take over in the event that the primary storage virtualization controller becomes handicapped or completely incapacitated. In active-active mode, both of the two storage virtualization controllers present, manage, or process the I/O requests of various logical media units present in the redundant storage virtualization subsystem concurrently. In active-active mode, both storage virtualization controllers are always ready to take over for other when a malfunction occurs in the other storage virtualization controller, causing it handicapped or completely incapacitated. Active-active mode typically provides better performance, since the resources of both storage virtualization controllers (e.g., central processing unit time, internal bus bandwidth) can be brought to bear in servicing I/O requests rather than the resources of a single storage virtualization controller.
Regardless of the mode, a basic functionality of a redundant storage virtualization computer system is that when one storage virtualization controller therein has some troubles, the other storage virtualization controller can take over the tasks of the troubled one, such as continuing the data access to the direct access storage devices. An inter-controller communication channel ICC must be provided between the storage virtualization controllers to establish a redundant storage virtualization computer system, thereby transmitting messages therebetween via inter-controller communication channel ICC. In addition, each storage virtualization controller always share the current task conditions or status of the other, that is, the two storage virtualization controllers are almost in synchronization and the data in each are almost the same.
Each storage virtualization controller follows up work status of peer controllers (the other storage virtualization controllers), and maintains data synchronization between all peer controllers. A storage virtualization controller informs the peer controllers when a change occurs in the memory of the storage virtualization controller, thereby providing data synchronization between all controllers. Therefore, the frequent data transfer on the inter-controller communication channel ICC would possibly increase the workload of the CPU in the storage virtualization controller is high, which in turn would degrade the system performance. Thus there is a need to resolve the heavy load of data transfer on the inter-controller communication channel ICC.